#ifndef __INFO_H__
#define __INFO_H__

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <stdint.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <time.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <pthread.h>
#include <linux/fb.h>
#include <dirent.h>
#include <linux/input.h>
#include <setjmp.h>
#include <pthread.h>
#include "bmp.h"
#include "jpeglib.h"
#include "font.h"

typedef struct bitmap
{
    char name[20];
    FILE *fp;
    //bmp结构体
    struct bitmap_header headar;
    struct bitmap_info info;
    //前后驱指针
    struct bitmap *prve;
    struct bitmap *next;
    //数据
    int width;
    int height;
    int bpp;
    int size;    
    char *rgb;
}bitmap1,*bitmap_list;


struct lcd_info
{
    struct fb_var_screeninfo vinfo;
    int fd;
    int width;
    int height;
    int bpp;
    char *fd_mem;//显存入口
};
struct lcd_info lcdinfo;


void init_lcd(struct lcd_info *lcdinfo);//初始化LCD
bitmap_list init_bitmap();//初始头节点
bitmap_list new_node(FILE *fp,struct dirent *ep);//创建新节点
bool add_bitmap_node(bitmap_list head,bitmap_list new);//添加新节点
void show(bitmap_list head);//遍历输出信息
void show_init(bitmap_list new,int num);//显示初始化
int  touchPanel(void);//触摸屏
bool del_node(bitmap_list head);//删除节点
bool is_empty(bitmap_list head);//判断空
void jpg2rgb(const char *jpgdata, size_t jpgsize,bitmap_list jpginfo);//jpg解码函数
void load_jpg(const char *jpgfile, bitmap_list jpginfo);//打开jpg图片调用解码函数
void lcd_show(int num);
int  touchPanel_init(void);//按压位置与功能
void print_init(void);//初始化界面

void showbitmap(bitmap *bm, char *p, int x, int y);// 显示位图函数，将位图bm显示在内存映射的LCD缓冲区p上，起始位置为(x, y)
int  size(int lcd);// 计算LCD屏幕所需显存大小的函数，参数为LCD设备文件描述符，返回值为所需显存大小
void *content1(void *arg);//进程1
void *content2(void *arg);//进程2
void *content3(void *arg);//进程3
void *content4(void *arg);//进程4
void *days(void *arg);//进程5

#endif